package persistencia;

import java.sql.Connection;
import java.sql.SQLException;
import modelo.Entidade;

public abstract class EntidadeRepositorio<T extends Entidade>
{
    protected Connection conexao;

    EntidadeRepositorio()
    {
        conexao = BancoDados.getInstancia().getConexaoPadrao();
    }

    EntidadeRepositorio(Connection conexao)
    {
        this.conexao = conexao;
    }
    
    public abstract void salvar(T entidade);
    public abstract void atualizar(T entidade);
    public abstract void deletar(T entidade);
    
    public abstract Long gerarCodigo();
    
    public void confirmarAlteracoes()
    {
        try
        {
            conexao.commit();
        }
        catch (SQLException ex)
        {
            // LOGGAR EXCEÇÃO
        }
    }
    
    public void cancelarAlteracoes()
    {
        try
        {
            conexao.rollback();
        }
        catch (SQLException ex)
        {
            // LOGGAR EXCEÇÃO
        }
    }
}